﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.Logica.Excepciones;
using System.Data;
using vudu.EnlaceDatos.SqlServer;
using System.Data.SqlClient;


namespace vudu.PaginasWeb.G5Profesor
{
    public partial class AgregarProfesor : System.Web.UI.Page
    {


        Profesor _miProfesor= new Profesor();
        Escuela _miEscuela= new Escuela();
                  


        protected void Page_Load(object sender, EventArgs e)
        {
            
            ocultarLaberError();

            try
            {
                //OBJETO SESSION 
               string miRol = (string)Session["rol"];
                if (miRol != "Escuela")
                    Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
                Escuela esc = (Escuela)Session["Usuario"];
                nombreEscuela.Text = "Escuela: " + esc.NombreEscuela;
                _miEscuela = (Escuela)Session["Usuario"];

            }
            catch (Exception)
            {
                 _miEscuela.IdEscuela = 1;
            }
            

            if (!IsPostBack)
            {
                llenarListaProfes();
                llenarCargo();                
            }
               
        }

        protected void llenarCargo()
        {
            DropCargo.Items.Add("Seleccionar Cargo");
            DropCargo.Items.Add("Jefe de Catedra");
            DropCargo.Items.Add("Enlace DTI");
            DropCargo.Items.Add("Coord. Ciclo Básico");
            DropCargo.Items.Add("Coord. Investigación");
            DropCargo.Items.Add("Profesor");

        }

        public DataTable cargarTabla(string miCedula)
        {
            DataTable miTabla = new DataTable();
            Profesor profesor = new Profesor();

            miTabla.Columns.Add("Cédula", typeof(string));
            miTabla.Columns.Add("Apellido", typeof(string));
            miTabla.Columns.Add("Nombre", typeof(string));
            miTabla.Columns.Add("Fecha Nacimiento", typeof(string));
            miTabla.Columns.Add("Teléfono", typeof(string));
            miTabla.Columns.Add("Email", typeof(string));
            miTabla.Columns.Add("Status", typeof(string));
            miTabla.Columns.Add("Tiempo Laboral", typeof(string));

            profesor = buscarMiProfesor(miCedula);           

            miTabla.Rows.Add(profesor.Cedula, profesor.Apellido, profesor.Nombre, profesor.FechaNacimiento, profesor.Telefono, profesor.Email, profesor.Estatus, profesor.TiempoLaboral);

            return miTabla;
        }

        protected void botonRegresar_Click(object sender, EventArgs e)
        {
            Response.Redirect("AgregarProfesorPrincipal.aspx");
        }

        protected void llenarListaProfes()
        {
            List<Profesor> miProfesor = new List<Profesor>();

            miProfesor = miListaProfesor();
            seleccionarProfesor.Items.Add("Selecciona Tu Profesor");

            int i = 1;
            foreach (Profesor profe in miProfesor)
            {
                seleccionarProfesor.Items.Add(profe.Nombre);
                seleccionarProfesor.Items[i].Value = profe.Cedula.ToString();
                i++;
                
            }

        }

        protected List<Profesor> miListaProfesor()
        {
            //se instancia un objeto de tipo conexion y otro de tipo sqlComand
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            List<Profesor> listaProfesor = new List<Profesor>();
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.Text;

            try
            {
                //se abre una conexion a la bd vudu
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                // Se indica el Query
                command.CommandText = "SELECT id_Cedula,nombreProfesor+' '+apellidoProfesor as miProfesor from Profesor";
                command.CommandTimeout = 10;
                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    Profesor miProfesor = new Profesor();
                    miProfesor.Cedula = reader.GetInt32(0);
                    miProfesor.Nombre = reader["miProfesor"].ToString();

                    listaProfesor.Add(miProfesor);
                }

                reader.Close();
                miConexion.CerrarConexionBd();


            }
            catch (Exception)
            {
                LabelError.Text = "Error en Conexión con Base De Datos";
                LabelError.Visible = true;
                LabelError.ForeColor = System.Drawing.Color.Red;

                return null;
            }

            return listaProfesor;
        }

        protected void BotonConsultar_Click1(object sender, EventArgs e)
        {
            string cedulaMiProfe = seleccionarProfesor.SelectedValue;

            if (seleccionarProfesor.Text == "Selecciona Tu Profesor")
            {
                errorSeleccionarProfesor.Text = "Debe ingresar dato";
                errorSeleccionarProfesor.Visible = true;

            }
            else
            {
                DataTable miTabla = new DataTable();
                BotonInscribir.Visible = true;
                textInicioContrato.Visible = true;
                textFinContrato.Visible = true;
                inicioContrato.Visible = true;
                finContrato.Visible = true;
                DropCargo.Visible = true;
                Cargo.Visible = true;
                BotonCancelar.Visible = true;
                asterisCargo.Visible = true;
                asterisInicioContrato.Visible = true;
                asterisFinContrato.Visible = true;

                BotonConsultar.Visible = false;
                BotonRegresar.Visible = false;

                try
                {
                    miTabla = cargarTabla(cedulaMiProfe);
                    informeProfesor.DataSource = miTabla;
                    informeProfesor.DataBind();
                    informeProfesor.Visible = true;

                }
                catch (Exception)
                {

                }
            }
        }

        protected Profesor buscarMiProfesor(string miCedula)
        {
            //se instancia un objeto de tipo conexion y otro de tipo sqlComand
            Conexion miConexion = new Conexion();
            SqlCommand command = new SqlCommand();
            SqlDataReader reader = null;
            command.Connection = miConexion.ObjetoConexion();
            command.CommandType = System.Data.CommandType.Text;

            try
            {
                //se abre una conexion a la bd vudu
                miConexion.AbrirConexionBd();
                command.Connection = miConexion.ObjetoConexion();
                // Se indica el Query
                command.CommandText = "SELECT * FROM Profesor WHERE id_cedula = "+miCedula;
                command.CommandTimeout = 10;
                reader = command.ExecuteReader();

                if (reader.Read())
                {
                    Profesor miProfesor = new Profesor();

                    miProfesor.Cedula = reader.GetInt32(0);
                    miProfesor.Nombre = reader["nombreProfesor"].ToString();
                    miProfesor.Apellido = reader["apellidoProfesor"].ToString();
                    miProfesor.Crn = reader.GetInt32(3);
                    miProfesor.Email = reader["emailProfesor"].ToString();
                    miProfesor.FechaNacimiento = reader.GetDateTime(5);
                    miProfesor.Sexo = reader["sexoProfesor"].ToString();
                    miProfesor.Telefono = reader["telefonoProfesor"].ToString();
                    miProfesor.TiempoLaboral = reader["contratoProfesor"].ToString();
                    miProfesor.Estatus = reader["estadoProfesor"].ToString();
                    miProfesor.EspacioMaxCarga = reader.GetInt32(10);
                    miProfesor.EspacioUtilizado = reader.GetInt32(11);

                    return miProfesor;
                }

                return null;

            }
            catch (Exception)
            {
                LabelError.Text = "Error en Conexión con Base De Datos";
                LabelError.Visible = true;
                LabelError.ForeColor = System.Drawing.Color.Red;
                return null;
            }
        }

        protected bool insertarDatos(string values2)
        {
            Conexion miConexion = new Conexion();           
            SqlCommand comando2 = new SqlCommand();
          

            String sql2 = "INSERT INTO EscuelaProfesor(fk_Escuela, fk_Profesor, fechaInicio, fechaFin, cargo)";
            sql2 = sql2 + " VALUES " + values2;
            comando2.CommandText = sql2;
            comando2.Connection = miConexion.ObjetoConexion();
            try
            {
                miConexion.AbrirConexionBd();               
                comando2.ExecuteNonQuery();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
            finally
            {
                miConexion.CerrarConexionBd();
            }

        }

        protected void BotonInscribir_Click(object sender, EventArgs e)
        {
            string values2,fechaInicio,fechaFin;
            bool seInserta = false;      

            if (validarCampos())
            {
                informeProfesor.Visible = false;
                DropCargo.Visible = false;
                seleccionarProfesor.Visible = false;
                Cargo.Visible = false;               
                inicioContrato.Visible = false;
                finContrato.Visible = false;
                textFinContrato.Visible = false;
                textInicioContrato.Visible = false;
                LabelSeleccion.Visible = false;
                BotonInscribir.Visible = false;
                BotonCancelar.Visible = false;
                BotonVolver.Visible = true;
                asterisCargo.Visible = false;
                asterisFinContrato.Visible = false;
                asterisInicioContrato.Visible = false;
                asterisSeleccionProfesor.Visible = false;


                try
                {

                    fechaInicio = "'" + textInicioContrato.Text + "'";
                    fechaFin = "'" + textFinContrato.Text + "'";

                    values2 = "(" + _miEscuela.IdEscuela + "," + seleccionarProfesor.SelectedValue + "," + fechaInicio + "," + fechaFin + ",'" + DropCargo.Text + "')";

                    seInserta = insertarDatos(values2);

                    if (seInserta)
                    {
                        LabelError.Text = "Ha sido Asignado Satisfactoriamente";
                        LabelError.Visible = true;
                        LabelError.ForeColor = System.Drawing.Color.Green;
                    }
                    else
                    {
                        LabelError.Text = "Transacción Fallida";
                        LabelError.Visible = true;
                        LabelError.ForeColor = System.Drawing.Color.Red;
                    }
                }
                catch (Exception)
                {
                    LabelError.Text = "Error en Registro";
                    LabelError.Visible = true;
                    LabelError.ForeColor = System.Drawing.Color.Red;
                }
            }

        }

        protected void BotonCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("AsignarProfesor.aspx");
        }

        protected void BotonVolver_Click(object sender, EventArgs e)
        {
            Response.Redirect("AgregarProfesorPrincipal.aspx");
        }

        protected bool errorDropDownList()
        {
            bool error = false;

            if (DropCargo.Text == "Seleccionar Cargo")
            {
                error = true;
            }
            else if (seleccionarProfesor.Text == "Selecciona Tu Profesor")
            {
                error = true;
            }

            if (error)
            {
                LabelError.Text = "Datos Incompletos.";
                LabelError.ForeColor = System.Drawing.Color.Red;
                LabelError.Visible = true;
            }

            return error;

        }

        protected bool validarCampos()
        {
            bool error = true;

            if (textFinContrato.Text == "")
            {
                errorFinContrato.Text = "Debe ingresar dato";
                errorFinContrato.Visible = true;
                error = false;
            }
            if (textInicioContrato.Text == "")
            {
                errorInicioContrato.Text = "Debe ingresar dato";
                errorInicioContrato.Visible = true;
                error = false;
            }
            if (DropCargo.Text == "Seleccionar Cargo")
            {
                errorCargo.Text = "Debe ingresar dato";
                errorCargo.Visible = true;
                error = false;
            }
            if (seleccionarProfesor.Text == "Selecciona Tu Profesor")
            {
                errorSeleccionarProfesor.Text = "Debe ingresar dato";
                errorSeleccionarProfesor.Visible = true;
                error = false;
            }


            return error;
        }

        protected void ocultarLaberError()
        {
            bool encendido = false;

            errorSeleccionarProfesor.Visible = encendido;
            errorInicioContrato.Visible = encendido;
            errorCargo.Visible = encendido;
            errorFinContrato.Visible = encendido;
            LabelError.Visible = encendido;
        }

       
    }
}